package com.naiterui.ehp.bs.im.repository.mongo;

import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;

import com.naiterui.ehp.bs.im.network.protocl.Disturb;
import com.naiterui.ehp.bs.im.vo.DisturbVO;

/**
 * 对于医生端push状态操作
 * <P>File name : PushStatusDao.java </P>
 * <P>Author : heqiang </P>
 * <P>Date : 2015年11月10日 </P>
 */
@Repository
public class DisturbDao extends MongoBaseDao {

    /**
     * 当前医生是否开启了免打扰模式的collectionName
     */
    private static final String COLLECTION_NAME_DISTURB = "m_disturb";

    /**
     * 保存勿扰模式
     * DisturbDao.saveDisturb()<BR>
     * <P>Author : heqiang </P>
     * <P>Date : 2015年11月18日 </P>
     */
    public void saveDisturb(Disturb disturb) {

        super.save(disturb, COLLECTION_NAME_DISTURB);
    }

    /**
     * 更新勿扰墨模式时间
     * DisturbDao.saveOrModify()<BR>
     * <P>Author : heqiang </P>
     * <P>Date : 2015年11月18日 </P>
     */
    public void saveOrModify(Disturb disturb) {
        super.upsert(new Query(Criteria.where("userId").is(disturb.getUserId())),
                     new Update().set("userId", disturb.getUserId()).set("beginTime", disturb.getBeginTime()).set("endTime", disturb.getEndTime()),
                     COLLECTION_NAME_DISTURB);

    }

    /**
     * 查询出勿扰勿扰模式时间
     * DisturbDao.findDisturb()<BR>
     * <P>Author : heqiang </P>
     * <P>Date : 2015年11月18日 </P>
     */
    public DisturbVO findDisturb(Long userId) {

        Disturb disturb = super.findOne(new Query(Criteria.where("userId").is(userId)), Disturb.class, COLLECTION_NAME_DISTURB);

        DisturbVO disturbVO = null;
        if (disturb != null) {
            disturbVO = new DisturbVO();
            disturbVO.setBeginTime(disturb.getBeginTime());
            disturbVO.setEndTime(disturb.getEndTime());
        }
        return disturbVO;
    }

    /**
     * 关闭勿扰模式
     * DisturbDao.removeDisturb()<BR>
     * <P>Author : heqiang </P>
     * <P>Date : 2015年11月18日 </P>
     */
    public void removeDisturb(Long userId) {
        super.remove(new Query(Criteria.where("userId").is(userId)), COLLECTION_NAME_DISTURB);
    }

}
